package dao;
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/**
 *
 * @author Silvita
 */
import org.hibernate.HibernateException;
import org.hibernate.Session;
import dao.MyFactory;
import java.util.List;
import model.Rol;

public class RolDAO {
    
    //Session ses;
    
    /**
     * Se encarga de obtener todos los roles existentes en la base de datos.
     * @return {@code List<Rol>} lista de roles que existen, sino hay ninguno la lista tiene null.
     * @throws HibernateException {@code HibernateException} si no se pudo conectar u obtener datos de la base.
     * @throws Exception {@code HibernateException} si no se pudo conectar u obtener datos de la base.
     */
    public List<Rol> obtenerRoles() throws HibernateException, Exception{ 
    //public void obtenerRoles() throws HibernateException, Exception{ 
        List<Rol> roles =null;
        MyFactory mf = new MyFactory();
        Session ses = mf.getSf().openSession(); 
        try { 
            ses = mf.getSf().openSession(); 
            roles = ses.createCriteria(Rol.class).list();
        }catch(Exception e){
            throw new Exception("Error: " + e.getMessage());
        }
        finally{
            ses.close();
            mf.getSf().close();
        }
        /*Rol temp = new Rol();
        for(int i = 0;i < roles.size();i++){ 
            temp = (Rol) roles.get(i);
            System.out.println(temp.getNomRol());
        }*/
        
        return roles; 
    }
    
    /**
     * Busca dentro de la lista de roles aquel que corresponda con el rol que se recibe. 
     * Retorna el id del rol o -1 si no se encuentra.
     * @param rol {@code String} rol a buscar.
     * @return {@code int} <b>idRol</b> correspondiente, o -1 si no se encuentra.
     * @throws {@code HibernateException, Exception} si no se pudo conectar u obtener datos de la base.
     */
    public int obtenerIdRol(String rol) throws HibernateException, Exception{
        List<Rol> roles = obtenerRoles();
        for(Rol r : roles){
            if(r.getNomRol().equalsIgnoreCase(rol)){
                return (int)r.getIdRol();
            }
        }
        return -1;
    }
}
